package com.stylefeng.guns.modular.owBackstageMgr.newsMgr.service;

import com.baomidou.mybatisplus.plugins.Page;
import com.stylefeng.guns.modular.system.model.News;
import com.baomidou.mybatisplus.service.IService;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 官网文章表 服务类
 * </p>
 *
 * @author huangyuehong123
 * @since 2018-06-14
 */
public interface INewsService extends IService<News> {

    /**
     * 根据条件获取文章列表
     */
    List<Map<String, Object>> getNewsList(Page<News> page, String beginTime, String endTime, String title, String orderByField, boolean asc);

    /**
     * 获取更多的新闻(排除当前新闻)
     */
    List<Map<String, Object>> getMoreNews(int num,boolean isDesc,Long id);

    /**
     * 查找“置顶”状态的新闻的主键id
     */
    Long getTheTopNewsId(Long category);

    /**
     * 根据主键id将某一条新闻“置顶”
     */
    void setNewsIsNotTop(Long id);

    /**
     * 将news对象list中的所有create_time转换成“年”和“月日”两部分，其他的值不变
     */
    List<Map<String,Object>> formatCreateTime(List<News> newsList);

    /**
     * 获取当前新闻的关联新闻(排除当前新闻)
     */
    List<News> getRelatedNews(int num,boolean isAsc,Long id,Long category);

    /**
     * 获取当前新闻的下一篇（比较新闻创建时间，较早的非删除状态的第一篇为下一篇）
     */
    News getNextNews(Date create_time,Long category);

    /**
     * 获取某一类型的新闻数量
     */
    Integer getCountOfCategory(String categoryStr);

    /**
     * 获取某一时间之前的num条新闻
     */
    List<News> getNewsBeforeTimes(Long category,String condition,Date create_time,Integer num,Boolean isAsc);

    /**
     * 获取对应年份条件下有数据的“年月”
     * @return
     */
    List<Date> getYearAndMonth(Integer year);

    /**
     * 获取对应年份下的所有“大事记”记录
     */
    List<Map<String, Object>> getHistories(Integer year);

    /**
     *  获取所有的会员风采相关的新闻
     */
    List<News> getAllMMNews(Integer num);

}
